import axios from "axios";  //引入axios
import env from "@/api/env.js";
import merge from 'lodash/merge';
axios.defaults.withCredentials = true

// 创建axios实例
const service = axios.create({
	//这里拿线上接口测试
  baseURL: env.dev.baseUrl,
	// baseUrl: env.dev.baseUrl,
  headers:{ //请求头headers
      'Content-Type': 'application/json;charset=UTF-8',
   },
   settimeout:50000,//超时时间
   loading: true,
});
// 请求拦截器
service.interceptors.request.use(
config => {
    // 在发送请求之前做些什么 验证token之类的
    // console.log("请求的数据:", config);
    // if (localStorage.getItem('token')) {
    //   config.headers.token = localStorage.getItem('token')
    // }
    return config; //记得一定要 返回config
},
error => {
    // 对请求错误做些什么
    // console.log("请求的数据:", error);
    return Promise.reject(error);
}
);

// 响应拦截器
service.interceptors.response.use(
response => {
    // console.log("返回的数据", response);
    // 这里拦截401错误，并重新跳入登页重新获取token
    if (response.status ===200 && response.status === 200) {
      // 通讯成功
      if (response.data.code === 200) {
        return response.data
      // } else if (response.data.code === 401) {
      //   // 如果是token过期，跳转至登录
      //   // this.$message.error("登录已过期，请重新登录！");
      //   // localStorage.removeItem('token') // 移除token，跳转至登录
      //   // router.push({
      //   //   path: '/Login'
      //   // })
      }
      return Promise.resolve(response.data)
    }
},
error => {
    // 对响应错误做点什么
    return Promise.reject(error);
}
);
service.adornUrl = (actionName) => {
  // console.log(env.dev.baseUrl + actionName)
  return env.dev.baseUrl + actionName
}

service.adornParams = (params = {}, openDefaultParams = true) => {
  var defaults = {
    't': new Date().getTime()
  }
  return openDefaultParams ? merge(defaults, params) : params
}

/**
 * post请求数据处理
 * @param {*} data 数据对象
 * @param {*} openDefaultData 是否开启默认数据?
 * @param {*} contentType 数据格式
 *  json: 'application/json; charset=utf-8'
 *  form: 'application/x-www-form-urlencoded; charset=utf-8'
 */
service.adornData = (data = {}, openDefaultData = true, contentType = 'json') => {
  var defaults = {
    't': new Date().getTime()
  }
  data = openDefaultData ? merge(defaults, data) : data
  return contentType === 'json' ? JSON.stringify(data) : qs.stringify(data)
}
export default service;
